package com.frkj.yuan.base;

import android.database.Observable;

import com.frkj.yuan.api.bean.OrderMsgBean;
import com.frkj.yuan.main.ConstantStaticUrl;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 作者：菲菲 on 2020/7/27 14:54
 * <p>网络请求
 * company：丰蓉科技
 */
public interface BaseService {
    /**
     * @param mMobile
     * @return 根据手机号码获取验证码
     */
    @GET(ConstantStaticUrl.GET_USER_CODE)
    Call<ResponseBody> getUserCode(@Query("mobile") String mMobile);

    @GET(ConstantStaticUrl.GET_VERSION_MSG)
    Call<ResponseBody> getVersionMsg(@Query("versionCode") String versionCode);

    /**
     * @param mMobile
     * @return 根据手机号码获取验证码
     */

    @GET(ConstantStaticUrl.GET_Mobile_CODE)
    Call<ResponseBody> getMobileCode(@Query("mobile") String mMobile);

    @POST(ConstantStaticUrl.get_add_peizhen)
    Call<ResponseBody> getPeizhenMsg(@Body RequestBody requestBody);

    /**
     * @param mMobile
     * @param smsCode
     * @return 根据验证码和手机号实现用户登录
     */
    @POST(ConstantStaticUrl.USER_LOGIN)
    Call<ResponseBody> getUserLogin(@Query("mobile") String mMobile,
                                    @Query("smsCode") String smsCode);

    /**
     * @param mToken
     * @param requestBody
     * @return 添加就诊人
     */
    @POST(ConstantStaticUrl.ADD_JIUZHEN_PERSON_URL)
    Call<ResponseBody> getAddJiuzhenPerson(@Header(ConstantStaticUrl.mToken) String mToken,
                                           @Body RequestBody requestBody);

    @GET(ConstantStaticUrl.getAutherMsg)
    Call<ResponseBody> getAutherMsg(@Header(ConstantStaticUrl.mToken) String mToken,
                                    @Query("cardNum") String cardNum);


    @POST(ConstantStaticUrl.order_msg)
    Call<ResponseBody> getOrderMsg(@Header(ConstantStaticUrl.mToken) String mToken,
                                   @Body RequestBody requestBody);

    @GET(ConstantStaticUrl.get_order_pay_no)
    Call<ResponseBody> getPayOrdrNo(@Header(ConstantStaticUrl.mToken) String mToken,
                                    @Query("orderNo") String orderNo);

    @GET(ConstantStaticUrl.getTuikuanMoney)
    Call<ResponseBody> getTuikuanMoney(@Header(ConstantStaticUrl.mToken) String mToken,
                                       @Query("userId") long userId,
                                       @Query("orderNo") String orderNo);

    /**
     * @param mToken
     * @param requestBody
     * @return 根据userid查询就诊人列表信息
     */
    @POST(ConstantStaticUrl.PERSON_GUANXI_URL)
    Call<ResponseBody> getPerson(@Header(ConstantStaticUrl.mToken) String mToken,
                                 @Query("pageNum") int pageNum,
                                 @Query("pageSize") int pageSize,
                                 @Body RequestBody requestBody);

    /**
     * @param requestBody
     * @return 根据省市区编号查询城市医院
     */
    @POST(ConstantStaticUrl.GET_HOSPTIAL_URL)
    Call<ResponseBody> getHopitallist(
            @Query("pageNum") int pageNum,
            @Query("pageSize") int pageSize,
            @Body RequestBody requestBody);

    @POST(ConstantStaticUrl.GET_KESHI_URL)
    Call<ResponseBody> getYuyueKeShiList(
                                 /*@Query("pageNum" ) int pageNum,
                                 @Query("pageSize") int pageSize,*/
            @Body RequestBody requestBody);

    @POST(ConstantStaticUrl.GET_ORDER_LIST)
    Call<ResponseBody> getOrderList(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("pageNum") int pageNum,
            @Query("pageSize") int pageSize,
            @Body RequestBody requestBody);


    @POST(ConstantStaticUrl.GET_CANCEL_DAIZHIFU)
    Call<ResponseBody> get_cancel_daizhifu(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Body RequestBody requestBody);

    @GET(ConstantStaticUrl.delete_order)
    Call<ResponseBody> delete_order(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("orderId") long orderId);

    @GET(ConstantStaticUrl.get_order_pay)
    Call<ResponseBody> getPayOrderMsg(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("userId") long userId,
            @Query("orderNo") String orderNo);

    /**
     * @param mToken
     * @param patientId
     * @param userId
     * @return 删除就诊人信息
     */
    @GET(ConstantStaticUrl.get_DELTE_PERSON)
    Call<ResponseBody> getDelete(@Header(ConstantStaticUrl.mToken) String mToken,
                                 @Query("patientId") long patientId,
                                 @Query("userId") long userId);

    @POST(ConstantStaticUrl.get_autherticon_url)
    Call<ResponseBody> getAuther(@Query("mobileToken") String mToken);

    @GET(ConstantStaticUrl.get_autherticon_url)
    Call<ResponseBody> getYouhuiquanlist(@Header(ConstantStaticUrl.mToken) String mToken,
                                         @Query("userId") long userId,
                                         @Query("type") int type,
                                         @Query("pageNum") int pageNum,
                                         @Query("pageSize") int pageSize);


    @GET(ConstantStaticUrl.getAginOrderMsg)
    Call<ResponseBody> getAginOrderMsg(@Header(ConstantStaticUrl.mToken) String mToken,
                                       @Query("orderId") long orderId);


    @GET(ConstantStaticUrl.GET_PROVICE_URL)
    Call<ResponseBody> getProvinceCityList();


    @GET(ConstantStaticUrl.get_map_poi)
    Call<ResponseBody> getMapPoiList(
            @Query("latitude") String latitude,
            @Query("longitude") String longitude);


    @GET(ConstantStaticUrl.get_user_infor)
    Call<ResponseBody> get_userinfor(@Header(ConstantStaticUrl.mToken) String mToken,
                                     @Query("id") long userId);

    @GET(ConstantStaticUrl.get_login_out)
    Call<ResponseBody> getLoginOut();


    @GET(ConstantStaticUrl.get_YuyueOrder_Service)
    Call<ResponseBody> getYuyueOrderService(@Header(ConstantStaticUrl.mToken) String mToken,
                                            @Query("patientId") long patientId,
                                            @Query("cityId") int cityId,
                                            @Query("officeName") String officeName);

    @GET(ConstantStaticUrl.getSelectTime)
    Call<ResponseBody> getSelectTime(@Query("hospitalId") long hospitalId);

    @GET(ConstantStaticUrl.getHospitalPoiList)
    Call<ResponseBody> getHospitalPoiList(@Query("hospitalId") long hospitalId);

    @GET(ConstantStaticUrl.getNearPeizhen)
    Call<ResponseBody> getNearPeizhen(@Query("latitude") String latitude,
                                      @Query("longitude") String longitude);

    @Multipart
    @POST(ConstantStaticUrl.upload_iamge)
    Call<ResponseBody> uploadImage(@Header(ConstantStaticUrl.mToken) String mToken,
                                   @Query("userId") long userId,
                                   @Part List<MultipartBody.Part> partLis);

    @Multipart
    @POST(ConstantStaticUrl.uploadImageNicheng)
    Call<ResponseBody> get_upload_nicheng(@Header(ConstantStaticUrl.mToken) String mToken,
                                          @Part List<MultipartBody.Part> partLis);

    @Multipart
    @POST(ConstantStaticUrl.uploda_more_image)
    Call<ResponseBody> upload_file_more(@Header(ConstantStaticUrl.mToken) String mToken,
                                        @Query("orderId") long orderId,
                                        @Query("userId") String userId,
                                        @Part List<MultipartBody.Part> partList);


    @GET("orders/list/{userId}/{orderStatus}/{page}")
    Observable<OrderMsgBean.OrderMsgBeanData> requestData(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Path("userId") long userId,
            @Path("orderStatus") int orderStatus,
            @Path("pageNum") int pageNum,
            @Path("pageSize") int pageSize);


    @GET(ConstantStaticUrl.ORDER_DETIAL_URL)
    Call<ResponseBody> getOrderDetials(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("orderId") long orderId,
            @Query("userId") long userId);
    @GET(ConstantStaticUrl.GET_MAP_STATE)
    Call<ResponseBody> get_map_States(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("orderId") String orderId);


    @GET(ConstantStaticUrl.getPeizhenPerson)
    Call<ResponseBody> getPeizhenPerson(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("orderId") String orderId);

    @GET(ConstantStaticUrl.GET_DIANPING_URL)
    Call<ResponseBody> getDianping(
            @Header(ConstantStaticUrl.mToken) String mToken,
            @Query("userId") long userId);

}
